package com.micro.service;

import com.micro.entity.HotelOrder;

import java.time.LocalDate;
import java.util.List;

public interface HotelOrderService {
    
    // 创建酒店订单
    HotelOrder createOrder(HotelOrder order);
    
    // 根据用户ID获取订单列表
    List<HotelOrder> getOrdersByUserId(Long userId);
    
    // 根据酒店ID获取订单列表
    List<HotelOrder> getOrdersByHotelId(Long hotelId);
    
    // 根据订单状态获取订单列表
    List<HotelOrder> getOrdersByOrderStatus(HotelOrder.OrderStatus orderStatus);
    
    // 根据用户ID和订单状态获取订单列表
    List<HotelOrder> getOrdersByUserIdAndOrderStatus(Long userId, HotelOrder.OrderStatus orderStatus);
    
    // 根据入住日期获取订单列表
    List<HotelOrder> getOrdersByCheckInDate(LocalDate checkInDate);
    
    // 根据退房日期获取订单列表
    List<HotelOrder> getOrdersByCheckOutDate(LocalDate checkOutDate);
    
    // 根据酒店ID和入住日期范围获取订单列表
    List<HotelOrder> getOrdersByHotelIdAndCheckInDateBetween(Long hotelId, LocalDate startDate, LocalDate endDate);
    
    // 根据订单ID获取订单
    HotelOrder getOrderById(Long orderId);
    
    // 更新订单状态
    HotelOrder updateOrderStatus(Long orderId, HotelOrder.OrderStatus orderStatus);
    
    // 退款
    HotelOrder refundOrder(Long orderId, java.math.BigDecimal refundAmount);
}
